package com.yuedou.api.entity.mall;

import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Date;
import java.math.BigDecimal;
import java.util.List;

/**
 * 拼团成团 列对象 mall_group_open_list
 *
 * @author ruoyi
 * @date 2022-11-07
 */
@Data
@NoArgsConstructor
@Accessors(chain = true)
@TableName("mall_group_open_list")
public class MallGroupOpenList implements Serializable {

    private static final long serialVersionUID = 1L;


    /**
     * $column.columnComment
     */
    @TableId(value = "id",type = IdType.AUTO)
    private Integer id;

    /**
     * 拼团id
     */
    private Integer groupId;

    /**
     * 发起团购的用户id
     */
    private Integer ownerId;

    /**
     * 发起人的 支付订单id
     */
    private Long ownerOrderId;

    /**
     * 团编号
     */
    private String groupNo;

    /**
     * 总需人数
     */
    private Integer userCount;

    /**
     * 当前已经成功参团的人数
     */
    private Integer buyUserCount;

    /**
     * 二维码地址
     */
    private String qrCodeUrl;

    /**
     *
     */
    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date createTime;

    /**
     * 成团时间
     */
    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date beginTime;

    /**
     * 截止时间
     */
    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date endTime;

    /**
     * 状态  0 - 未达到人数  1 - 已经达到人数  2 - 团购已成功结束（已完成团购） 3 - 团购未达到人数 团购失败
     */
    private Integer state;

    /**
     * 成团时间
     */
    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date successTime;

    /**
     *  发送推送提醒时间
     */
    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date warnTime;

    /**
     *  剩余参团人数
     */
    @TableField(exist = false)
    private Integer leftUserCount;


    @TableField(exist = false)
    private List<MallGroupOpenDetail> groupOpenDetails;
}
